package com.cos.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * jedis数据库操作工具类
 */
public class JedisPoolUtil {
    //数据库连接池
    private static JedisPool pool;
    //使用静态代码块
    static{
        //properties
        //创建数据库连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMinIdle(10);
        config.setMaxIdle(25);
        config.setMaxTotal(25);
        config.setTestOnBorrow(false);
        config.setTestOnReturn(false);
        //使用数据库连接池配置对象来创建数据库连接池对象
//        pool=new JedisPool(config,"10.36.137.145",6379);
        /* 配置上redis的授权码==>就是密码 */
        pool=new JedisPool(config,"10.36.137.145",6379,600,"111111");


    }

    /**
     * 获取jedis链接
     * @return
     */
    public static Jedis getResource(){
        return pool.getResource();
    }
//    private ThreadLocal
    /**
     * 关闭资源
     */
    public static void close(Jedis jedis){
        jedis.close();
    }

    /**
     * 保存数据的方法 redis数据类型==>String
     * @param key
     * @param value
     * @return
     */
    public static String set(String key,String value){
        Jedis jedis = getResource();
        String result = jedis.set(key, value);
        close(jedis);
        return result;
    }
    /**
     * 保存数据的方法 redis数据类型==>String
     * @param key
     * @return
     */
    public static String get(String key){
        Jedis jedis = getResource();
        String result = jedis.get(key);
        close(jedis);
        return result;
    }

    /**
     * 保存数据,带生存时间
     * @param key
     * @param value
     * @param time
     * @return
     */
    public static String setex(String key,String value,int time){
        Jedis jedis = getResource();
        String result = jedis.setex(key, time, value);
        close(jedis);
        return result;
    }

    /**
     * 重置数据的存活/生存时间
     * @param key
     * @param time
     * @return
     */
    public static int resetTime(String key,int time){
        Jedis jedis = getResource();
        Long expire = jedis.expire(key, time);
        close(jedis);
        return expire.intValue();
    }
    /**
     * 移除数据的时间
     * @param key
     * @return
     */
    public static int removeDataTime(String key){
        Jedis jedis = getResource();
        Long expire = jedis.persist(key);
        close(jedis);
        return expire.intValue();
    }

    /**
     * 获取数据的剩余存活时间
     * @param key
     * @return
     */
    public static Long getDataLifeTime(String key){
        Jedis jedis = getResource();
        Long ttl = jedis.ttl(key);
        close(jedis);
        return ttl;
    }



}
